CKM_AES_GMAC
This section provides a summary of CKM_AES_GMAC.
Note
This mechanism is only available if you are using PTK 7.1.0 or newer with ProtectServer 3 HSM Firmware 7.01.00 or newer.
Supported operations
| Operation | Support |
|---|---|
| Encrypt and Decrypt | No |
| Sign and Verify | Yes |
| SignRecover and VerifyRecover | No |
| Digest | No |
| Generate Key/Key-Pair | No |
| Wrap and Unwrap | No |
| Derive | No |
FIPS Mode support
| Available in FIPS Mode | Restrictions in FIPS Mode |
|---|---|
| Yes | No |
Key size range (bytes) and parameters
| Key size minimum/maximum | Value |
|---|---|
| Minimum | 16 |
| FIPS Minimum | 16 |
| Maximum | 32 |
Parameter
CK_GCM_PARAMS
Mechanism description
AES-GMAC is a mechanism for single and multiple-part signatures and verification described in NIST Special Publication 800-38D. GMAC is a special case of GCM that authenticates only the additional authenticated data (AAD) part of the GCM mechanism parameters. When GMAC is used with C_Sign or C_Verify, pData points to the AAD. GMAC does not use plaintext or ciphertext.
The signature produced by GMAC is also referred to as a tag.
The mechanism parameter, according to PKCS#11 2.40, is a 12 byte IV value and the tag size is a fixed 16 bytes.
The ProtectToolkit (PTK) implementation has a special feature to assist with compatibility with other implementations that use the CK_GCM_PARAMS structure as the mechanism parameter.
If the CK_GCM_PARAMS structure is passed as a parameter then:
-
The tag’s length is determined by the
CK_GCM_PARAMSfield ulTagBits. -
The IV length is determined by the
CK_GCM_PARAMSfield ulIvLen. -
If any pAAD and ulAADLen are both non zero, then the AAD value will be processed before any data passed in the C_SignUpdate call; that is, the AAD value to be signed can be passed in through the
CK_GCM_PARAMSor the C_SignUpdate call (or both).
Otherwise the parameter is interpreted as the IV value and the tag size will be 16 bytes.
The software emulation does not accept a raw IV value and the CK_GCM_PARAMS must be supplied by the application.
Constraints on key types and the length of data are summarized in the following table:
| Function | Key type | Data length | Signature length |
|---|---|---|---|
| C_Sign | CKK_AES | < 2^64 | Determined by ulTagBits |
| C_Verify | CKK_AES | < 2^64 | Determined by ulTagBits |
For this mechanism, the ulMinKeySize and ulMaxKeySize fields of the CK_MECHANISM_INFO structure are 16, 26, and 32.
Return to ProtectToolkit-C mechanisms.